docs(skills): constrain needs-design + require epic label on parent Epics#203
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
🚧 Files skipped from review as they are similar to previous changes (2)
📝 WalkthroughWalkthroughDocumentation updates to GitHub issue creation, implementation, and recommendation workflows establish stricter label discipline: the ChangesLabel Requirements and Workflow Rules
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
Suggested labels
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Comment |
… Epics Two tightenings against the failure modes Epic #190 exposed today, both visible right in the skills the agents read. - `creating-github-issues`: * Phase 6 (file parents) now states the `epic` label is required — the recommender's discriminator for what to treat as an Epic. * New red flag for forgetting it (the bug I hit filing #190). * New red flag for filing `needs-design` as a safety blanket — the label is the most expensive in the vocabulary (auto-dispatch skips, must be un-labelled by a maintainer). Reserve it for the single case where ≥2 candidate approaches AND building each as a worktree-A/worktree-B POC wouldn't decide. - `implementing-github-issues`: matching red flag for follow-up filing — the default is "build to disambiguate", not "label needs-design and bail". "Feels designy" / "want human ack first" / "more work than I want to handle in this PR" are explicitly rejected as rationales. - `recommending-github-issues`: surface "missing 'epic' label" in `## Excluded` with an actionable reason — silent exclusion is what makes "stuck dispatch" diagnostically opaque (see #190's 90-min loss cited in the rationale). Discovered while: dogfooding Epic #190 — the agent shipped PR #198 (file-backed Epic store) cleanly, but filed #200 with `needs-design` despite all three "gaps" carrying concrete implementation paths with file names, function names, and data shapes. Stripped that label from #200 today. These skill edits prevent the next iteration from doing it again.
03256cb to
947aa47
Compare
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In
`@packages/cli/src/bootstrap-assets/skills/implementing-github-issues/SKILL.md`:
- Around line 715-730: The fenced code block that contains the three "Fork ..."
bullet lines (starting with "Fork A: stringify the slug into the existing
numeric `epicNumber`...") is missing a language identifier; update that
triple-backtick fence to include a language (e.g., ```text or ```md) so the
block is properly rendered and accessible in SKILL.md, keeping the block
contents unchanged.
In `@packages/skills/implementing-github-issues/SKILL.md`:
- Around line 715-730: The fenced code block in the `blocked.json` example
inside the `context` section is missing a language identifier; update that
fenced block (the one starting with the line containing "Fork A: stringify the
slug into the existing numeric `epicNumber`...") to include an appropriate
language tag (e.g., text or md) after the opening triple backticks so the block
renders correctly and improves accessibility.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 8cf2cb08-59ac-4f51-8c58-24cd5b50f00a
📒 Files selected for processing (6)
packages/cli/src/bootstrap-assets/skills/creating-github-issues/SKILL.mdpackages/cli/src/bootstrap-assets/skills/implementing-github-issues/SKILL.mdpackages/cli/src/bootstrap-assets/skills/recommending-github-issues/SKILL.mdpackages/skills/creating-github-issues/SKILL.mdpackages/skills/implementing-github-issues/SKILL.mdpackages/skills/recommending-github-issues/SKILL.md
✅ Files skipped from review due to trivial changes (3)
- packages/cli/src/bootstrap-assets/skills/recommending-github-issues/SKILL.md
- packages/skills/recommending-github-issues/SKILL.md
- packages/cli/src/bootstrap-assets/skills/creating-github-issues/SKILL.md
🚧 Files skipped from review as they are similar to previous changes (1)
- packages/skills/creating-github-issues/SKILL.md
Summary
Three skill-level tightenings against failure modes Epic #190 exposed in today's dogfood run.
Failure 1: silent Epic exclusion
I filed Epic #190 with labels
phase:11,enhancement,dogfoodand forgotepic. The recommender'slistOpenEpics(packages/dispatcher/src/github.ts) discriminates by theepiclabel. Without it, #190 dropped out of the queue entirely — not in Ready, Needs human input, Blocked, or even Excluded. It just vanished. ~90 minutes lost diagnosing "queue is stuck" before I noticed the label diff in the epics cache.creating-github-issuesPhase 6 now states theepiclabel is required on parent Epics.creating-github-issuesred flags gain a "forgot theepiclabel" entry naming the silent-disappearance failure.recommending-github-issuesgains an explicit instruction to surface "issue qualifies as an Epic by all other rules but is missingepiclabel" in## Excludedwith an actionable reason. Silent exclusion is the actual bug.Failure 2:
needs-designas a safety blanketThe agent that shipped PR #198 (file-backed Epic store) filed follow-up #200 with
needs-designdespite all three gaps in the body carrying concrete implementation paths — file names, function names, data shapes, verbs. None were design forks; they were enhancements waiting on a worktree A/B. Theneeds-designlabel is the most expensive in middle's vocabulary (auto-dispatch skips it until a maintainer un-labels), and the agent used it as a "want human ack first" escape hatch — the corporate trap.creating-github-issuesred flags +implementing-github-issuesred flags both gain an explicit constraint:needs-designrequires ≥2 specific candidate approaches AND a stated reason why building each as a worktree-A/B POC wouldn't decide. "Feels designy" / "want human ack first" / "more work than I want to handle in this PR" are explicitly rejected as rationales. Default is build to disambiguate.I stripped
needs-designfrom #200 today; the recommender will pick it up next tick.Failure 3: complexity pause without an enumerated candidate list
The complexity-pause section (under "Running under middle") had the right structural rule — A/B/C up to
complexity_ceiling, pause above it — but no enforcement against feelings of complexity. Agents have been pausing without writing down the candidates. Hardened to require the literal exercise of writing the fork list before anykind=complexitypause. The body now reads:Three honest outcomes follow from the list: 1 fork = pick it; 2–3 forks = Architectural-forks worktree mechanic; ≥
complexity_ceiling + 1distinct concrete approaches with no clear winner = real pause. The list is the gate.Plus a matching red-flag entry: "This feels like a complexity pause → feelings aren't forks."
Verification
bun run typecheck— cleanbun run sync-skills— bootstrap-assets mirror re-syncedbun test packages/cli/test/state-issue-body.test.ts packages/dispatcher/test/state-issue.test.ts— 19 passSummary by CodeRabbit